POV-Ray : Newsgroups : povray.general : Highlights Syntax : Highlights Syntax Server Time
30 Jul 2024 06:19:46 EDT (-0400)
  Highlights Syntax  
From: clipka
Date: 27 Aug 2009 05:28:52
Message: <4a9651d4$1@news.povray.org>
There are several drawbacks I see in POV-Ray's highlights syntax:

- Phong and Specular are basically redundant; you only need one of the 
two in any material.

- Although they basically do the same, the parameterization of Phong and 
Specular is different.

- Neither Phong nor Specular highlights are implemented in an "energy 
conserving" fashion; that is, changing the parameter not only changes 
the size of the highlight, but also changes the total amount of light 
reflected in this manner, making it difficult to find realistic 
settings, let alone keeping them in "sync" with reflection.

(This difficulty to find realistic settings also appears to be the 
reason why highlights are not taken into account for radiosity sample 
rays; theoretically they should be, while a comment claims that this 
"causes problems with colors being far too bright" - which is actually 
an indication that energy conservation is violated somewhere.)


I therefore propose to phase out the existing syntax in favor of a 
different one - including different interpretation of the parameters - , 
along the lines of:

   highlights {
     specular       // or "phong", choosing the model
     0.3            // brightness of the highlight
     roughness 0.01 // value controlling the "spread" of the highlight
   }

where...

- a brightness parameter of 1.0 would /not/ be interpreted as "/peak/ 
highlight brightness = incoming light brightness", but rather "/total/ 
highlight output = incoming light input" (that is, changing the "spread" 
of the highlight would cause the peak brightness to diminish 
accordingly), so it can more easily be matched to diffuse and reflection 
parameters [*]

- roughness would be interpreted as currently in specular highlights; 
for phong highlights, a correction factor would be applied to make the 
highlight size roughly equivalent regardless of choice of highlight model.

[* this would allow for the rules of thumb "diffuse + highlights < 1.0" 
and "highlights = reflection" to get somewhat realistic results]


The new syntax, as proposed above, would allow for the old one to be 
retained for a while (old syntax would continue to use the old 
parameterization schemes of course, i.e. the main parameter indicating 
peak brightness) and just cause a deprecation warning. (To begin with, 
phong and specular could still live side-by-side when using the old 
syntax, in case anyone happens to use them simultaneously.)


Comments?


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.